part of '../version.dart';

extension UpdatesSortExtension on List<MajorUpdate> {
  /// 将里面的大版本和小版本完全排序
  List<MajorUpdate> sortThoroughly() {
    // 对所有版本深拷贝
    final List<MajorUpdate> deepCopy = List.from(this);
    // 将大版本和里面的每个小版本分别进行顺序排序
    deepCopy.sort();
    for (final major in deepCopy) {
      major.patchUpdates.sort();
    }
    // 返回排序过的深拷贝List
    return deepCopy;
  }

  /// 获取当前最新的版本
  Version get newestVersion {
    // 如果列表为空，则报错
    if (isEmpty) throw BugDev("没有任何版本信息");
    // 找到最后一个大版本的最后一个修订版并返回
    // 由于版本都已经排序过，因此最后就代表最新
    final lastMajor = sortThoroughly().last;
    // 如果主版本中没有任何修订版本，则传回主版本的version
    if (lastMajor.patchUpdates.isEmpty) return lastMajor.version;
    // 否则找到修订版并且传回
    return sortThoroughly().last.patchUpdates.last.version;
  }
}
